package org.dromara.solonplugins.job.test3.service;

import org.dromara.solonplugins.job.IJobSource;
import org.dromara.solonplugins.job.JobInfo;
import org.dromara.solonplugins.job.test3.job.JobDemo1;
import org.dromara.solonplugins.job.test3.job.JobDemo2;
import org.dromara.solonplugins.job.test3.job.JobDemo3;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;

import java.util.ArrayList;
import java.util.List;

/**
 * Job服务
 *
 * @author: aoshiguchen
 */
@Component
public class JobService implements IJobSource {
    @Inject
    private JobDemo1 jobDemo1;
    @Inject
    private JobDemo2 jobDemo2;
    @Inject
    private JobDemo3 jobDemo3;

    /**
     * 获取所有job列表
     * @return Job列表
     */
    @Override
    public List<JobInfo> sourceList() {
        List<JobInfo> list = new ArrayList<>();
        // 正常业务场景下，此处一般是从数据库动态读取
        list.add(new JobInfo()
                .setId("1") // 此处一般是主键ID
                .setName("JobDemo1") // 此处对应具体Job的bean名称
                .setDesc("该job的描述1") // job描述
                .setCron("0/5 * * * * ?") // cron
                .setParam("我是默认参数") // 默认参数，可以不指定
                .setEnable(true) // 默认是否启用，默认不启用，运行时可以通过JobExecutor.start来启动
                .setJobHandler(jobDemo1)
        );
        list.add(new JobInfo()
                .setId("2") // 此处一般是主键ID
                .setName("JobDemo2") // 此处对应具体Job的bean名称
                .setDesc("该job的描述2") // job描述
                .setCron("0/10 * * * * ?") // cron
                .setParam("") // 默认参数，可以不指定
                .setEnable(true) // 默认是否启用，默认不启用，运行时可以通过JobExecutor.start来启动
                .setJobHandler(jobDemo2)
        );
        list.add(new JobInfo()
                .setId("3") // 此处一般是主键ID
                .setName("JobDemo3") // 此处对应具体Job的bean名称
                .setDesc("该job的描述3") // job描述
                .setCron("0/5 * * * * ?") // cron
                .setParam("") // 默认参数，可以不指定
                .setEnable(true) // 默认是否启用，默认不启用，运行时可以通过JobExecutor.start来启动
                .setJobHandler(jobDemo3)
        );
        return list;
    }

}
